<?php
/*####################
# Potrebni funkcii
# 
#
####################*/

require_once('includes/db.php');

/*
* Funkcija za zemeanje na atribut - vraka vrednost na atributot
*/
function getAttrib($tag,$attrib,$src)
{
	$value=explode($tag,$src);
	$attrib.="=\"";
	$value=explode($attrib,$value[1]);
	$value=explode("\"",$value[1]);
	return $value[0];
}

/*
* Funkcija za proverka dali odreden string sodrzi drug string
*/
function contains($str, $content){
$ignorecase = 1;
    if ($ignorecase){
        $str = strtolower($str);
        $content = strtolower($content);
    }  
    return strpos($content,$str) ? true : false;
}

/*
* Funckija sto ja vraka momentalnata vremenska sostojba spored soodveten kod
*/
function getCond($code,$lang){
	$connector=new DbConnector();
	$qu="SELECT $lang FROM sostojba WHERE condid=$code";
	$result = $connector->query($qu);
	$row = $connector->fetchArray($result);
	return $row[$lang];
}

/*
* Funckija sto ja dava priblizno lokacijata na posetitelot spored IP adresata
*/
function getLoc($ip){
	$url="http://www.melissadata.com/Lookups/iplocation.asp?ipaddress=".$ip;
	$src=file_get_contents($url);
	$city=explode("City</td><td><b>",$src);
	$city=explode("</b></td>",$city[1]);
	return $city[0];
}

/*
* Funkcija za zemanje na apikey od konfiguraciskite podesuavnja
*/
function getAKey()
	{
		$conf = ConfClass::getSettings();
		$apikey=$conf['apikey'];
		return $apikey;
	}


/* 
* Funckija sto generira random boja
*/
function rcolor(){
	mt_srand((double)microtime()*1000000);
    $c = '';
    while(strlen($c)<6){
        $c .= sprintf("%02X", mt_rand(0, 255));
    }
    return $c;
}

/*
* Funkcija sto generira vremenska linija spored parametrite
*/
function genDateLine($od,$do)
{
	try
	{
	$line="";
	
	$godod=$od[0];
	$mesecod=$od[1];
	$denod=$od[2];
	
	$goddo=$do[0];
	$mesecdo=$do[1];
	$dendo=$do[2];
	
	if($godod==$goddo)
	{
		if($mesecod==$mesecdo)
		{
			if($denod==$dendo) // za ist den
			{
				for($i=0;$i<25;$i+=4)
					$line.=$i.":00 h|";
			}
			else
			{
				for($i=$denod;$i<=$dendo;$i++) // za razlicen den - isti meseci
						$line.=$i."-".$mesecod."|";
			}
		}
		else
		{
			$mesec=$mesecod;
			for($i=$denod;;$i++)
			{
				if($mesec<=7 && $mesec%2==1) // neparen mesec - prva polovina - 31 den
				{
					if($i>31) { $i=1; $mesec++; }
				}
				
				else if($mesec<=7 && $mesec%2==0) // paren mesec - prva polovina - 31 den
				{
					if($mesec==2) // mesec februari 
					{
						if($godod%2==0 && $godod%4==0)  // prestapna godina
						{
							if($i>29) { $i=1; $mesec++; }
						}
						else if($i>28) { $i=1; $mesec++; }
					}
					else 
					{
						if($i>30) { $i=1; $mesec++; }
					}
				}
				else 
				{
					if($mesec>7 && $mesec%2==0) // paren mesec - vtora polovina
					{
						if($i>31) { $i=1; $mesec++; }
					}
					else if($mesec>7 && $mesec%2==1) // neparen mesec - vtora polovina
					{
						if($i>30) { $i=1; $mesec++; }
					}
				}
				$line.=$i."-".$mesec."|";
				if($i==$dendo && $mesec==$mesecdo) break;
			}
		}
	}
	else
	{
		$god=$godod; // razlicna godina
		for($i=$mesecod;;$i++)
		{
			if($i>12) {$i=1; $god++;}
			$line.=$i."-".$god."|";
			if($i==$mesecdo && $god==$goddo) break;
		}
	}
	return $line;
	}
	catch(Exception $e)
	{
		return "error";
	}
}

/*
* Funkcija koja go krati stringot spored parametrite
*/
function resize($str,$l)
{
	return substr($str,0,strlen($str)+$l);
}

/*
* Funkcija koja spored parametar - vraka tip na graf
*/
function getGraphT($t)
{
	switch($t){
		case 't':
			return 'temp';
			break;
		case 'p':
			return 'pritisok';
			break;
		case 'w':
			return 'vetar';
			break;
		case 'v':
			return 'vid';
			break;
		case 'h':
			return 'vlaznost';
			break;
		default:
			return 'temp';
			break;
	}
}

/*
* Funkcija koja spored parametar - vraka naslov na graf
*/
function getGraphN($t)
{
	switch($t){
		case 't':
			return 'Temperatura';
			break;
		case 'p':
			return 'Pritisok';
			break;
		case 'w':
			return 'Veter';
			break;
		case 'v':
			return 'Vidlivost';
			break;
		case 'h':
			return 'Vlaznost';
			break;
		default:
			return 'Pritisok';
			break;
	}
}


/*
* Funkcija sto gi vcitua gradovite od baza i generira multiple selection box
* potrbeno vo delot istorija.php
*/
function vcitajGradovi()
{
	$mlb="<select name=\"gradovi\" id=\"gradovi\" MULTIPLE size=\"6\">";
	$connector=new DbConnector();
	$qu="SELECT grad FROM gradovi";
	$result = $connector->query($qu);
	while($row = $connector->fetchArray($result))
	{
		$val=str_replace(" ","%20",$row[0]);
		$mlb.="<option value=\"$val\">$row[0]</option>";
	}
	$mlb.="</select>";
	return $mlb;
}

/*
* Funkcija koj asto vraka celosno URL
*/
function getAddress()
{
    
    $protocol = $_SERVER['HTTPS'] == 'on' ? 'https' : 'http';
    
    return $protocol.'://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
}


/* 
*
* Funkcija za proverka na jazikot
* prima parametar - ?j - prosleden preku URL
* soodvetno na toj parametar vklucuva jazicen fajl
* setira cookie so cija sto pomos se pamti izbrainot jazik
*
*/

function checkLang($lang)
{
	$path="lang/";
	$imgpath="img/";
	$param=$lang;
	
	if(isset($param) && strlen($param)>0)
	{
		if(strlen($param)==2) 	$j_file=$param.".php";
		if(file_exists($path.$j_file))
		{
			setcookie("jazik", $param, time()+2592000, "/"); 
		}
		else 
		{
			if(isset($_COOKIE["jazik"]))
			{
				if(strlen($_COOKIE["jazik"])==2) $j_file=$_COOKIE["jazik"].".php";
				else $j_file="mk.php";
			}
			else
			{
				setcookie("jazik", "mk", time()+2592000, "/");
				$j_file="mk.php";
			}
		}
	}
	else
	{
		if(isset($_COOKIE["jazik"]))
		{
			if(strlen($_COOKIE["jazik"])==2) $j_file=$_COOKIE["jazik"].".php";
			else $j_file="mk.php";
		}
		else
		{
			@setcookie("jazik", "mk", time()+2592000, "/");
			$j_file="mk.php";
		}
	}
	@require_once($path.$j_file);
}

/*
* Funkcija koja sto kazuva koj jazik e tekovno postaven mk ili en
*/
function getFlag()
{
	$imgpath="img/";
	if(isset($_GET['j']) && strlen($_GET['j'])==2)
	{
		if(file_exists($imgpath.$_GET['j'].".gif"))
		{
			return $_GET['j'];
		}
		else if(isset($_COOKIE["jazik"]))
		{
			if(strlen($_COOKIE["jazik"])==2) return $_COOKIE["jazik"];
			else return "mk";
		}
	}
	else
	{
		if(isset($_COOKIE["jazik"]))
		{
			if(strlen($_COOKIE["jazik"])==2) return $_COOKIE["jazik"];
			else return "mk";
		}
		else return "mk";
	}
}

/*
* Funkcija koja sto go vraka imeto na slikata, spored soodvetno izbraniot jazik
*/
function getRFlag()
{
	$imgpath="img/";
	$flag=getFlag();
	switch($flag)
	{
		case 'en': return $imgpath."mk.gif"; break;
		case 'mk': return $imgpath."en.gif"; break;
		default: return $imgpath."en.gif"; break;
	}
}

/*
* Funkcija koja sto go vraka postaveniut starten datum
*/
function getSdate()
{
		$conf = ConfClass::getSettings();
		$datum=$conf['datum'];
		return $datum;
}


/*
*
* Funkcija koja sto proveruva dali izbran datum e validen
* odnosno se naoga posle datumot na startuvanje na skriptata
*
*/
function checkDatum($newdate)
{
	$datum=getSdate();
	$datum=explode("-",$datum);
	$newdate=explode("-",$newdate);
	if($newdate[0]>$datum[0]) return true;
	else if($newdate[0]<$datum[0]) return false;
	else
	{
		if($newdate[1]>$datum[1]) return true;
		else if($newdate[1]<$datum[1]) return false;
		else
		{
			if($newdate[2]>$datum[2]) return true;
			else if($newdate[2]<$datum[2]) return false;
			else 
				return true;
		}
	}
}

/*
* Funkcija koja sto go proveruva tekovnoto vreme i vraka den ili nok soodvetno
* za den se smeta periodot od 06:00 AM do 07:00 PM
* ostatokot e nok
*/
function daynightC($ip)
{
	$sys_zona=substr(date("O"),0,3);
	$sys_cas=date("H");
	
	$rem_zona=getbyIP($ip,"Timezone");
	$rem_cas=$sys_cas-$sys_zona+$rem_zona;
	if($rem_cas>6 && $rem_cas <18) return "d"; //den
	else return "n"; //nok
}

/*
* Pomosna Funkcija koja sto go zema soodveniot parametar spored ip adresata
* Dozvoleni parametri 
* - CountryCode,CountryName,RegionCode,
* - RegionName,City,ZipPostalCode,Latitude,Longitude
* - Timezone,Gmtoffset,Dstoffset
*/
function getbyIP($ip,$param)
{
	$url="http://ipinfodb.com/ip_query.php?ip=".$ip;
	$backupurl="http://backup.ipinfodb.com/ip_query.php?ip=".$ip."&output=xml";
	
	$xml = file_get_contents($url);
 
	// proverka za konekcija
	if (!$xml){
		$backup = file_get_contents($backupurl);
		$answer = new SimpleXMLElement($backup);
		if (!$backup) return false; //Konekcija nemoze da se vospostavi
	}else{
		$answer = new SimpleXMLElement($xml);
	}
	return $answer->$param;
}
?>